package com.foton.bpc.all.remoting.rpc;

import com.foton.bpc.all.remoting.invoker.Invoker;

import java.net.URI;

/**
 * @Author RenPu
 * @Date 2023/6/6 16:04
 * @Version 1.0
 * @Description: 定义协议抽象接口
 **/
public interface Protocol {

    /** 开放服务
     * 暴露服务所需要得方法（服务提供者）
     * @param uri   协议名称：//ip:port/service全类名?参数名称=参数值&参数名称=参数值
     * @param invoker 调用具体实现类得代理对象
     */
    public void export(URI uri, Invoker invoker);


    /**
     * 服务调用所需得方法（服务调用者）
     * @return
     */
    public Invoker refer(URI consumerUri);

}
